Computer systems, such as hardware systems and software systems that run on computers often have undetected flaws that can be exploited by hardware attacks or software attacks, such as malicious computer programs that are received over the Internet or other communication networks. The hardware attacks and software attacks can include Trojans, viruses, worms, spyware, and other malware. Many existing computer security systems combat hardware attacks and software attacks by attempting to prevent the attacks from compromising any part of the computer system.
Processors in computer systems are designed to protect sensitive data in memory from both hardware attacks and software attacks. Some processors provide cryptographic mechanisms for encryption, integrity, and replay protection. Memory encryption protects the confidentiality of memory-resident data. Integrity protection prevents an attacker from causing any hidden modifications to the ciphertext (i.e., encrypted data, as opposed to plaintext that is unencrypted data) in memory. Replay protection eliminates any undetected temporal substitution of the ciphertext. In the absence of encryption, integrity, and replay protections, an attacker with physical access to the system can record snapshots of cache lines and replay the cache lines at a later point in time to modify the cache lines and attack the computer system.